<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Http\Resources\Result;

class FileController extends Controller
{
     /**
     * 上传文件
     * @param  Request  $request
     * @return Response
     */
     public function upload(Request $request)
     {
        // 验证文件,最大2MB,图片
        $request->validate([
            'avatar' => 'required|image|max:2048'
        ]);

        /*
        存储文件到 根目录/storage/app/public/avatars 目录下
        path是从 根目录/storage/app/public/ 开始的位置
        */
        $path = $request->file('avatar')->store('avatars', 'public');
        /*
        文件可以公开访问的URL: 根目录/public
        但是由于文件存储在: 根目录/storage/app/public/avatars
        所以我们建立了一个映射： public_path('storage') => storage_path('app/public')
        类似于一个共享文件夹or快捷键
        $url是从 根目录/public 开始的位置
        */
        $url = Storage::url($path);
        // asset()方法补全 前面的协议，ip，端口
        return Result::OK('上传成功', asset($url));
    }
}
